애저 컨테이너 레지스트리
1. 개요
1. 개요
애저 컨테이너 레지스트리는 마이크로소프트가 제공하는 완전 관리형 컨테이너 레지스트리 서비스이다. 이 서비스는 마이크로소프트 애저 클라우드 플랫폼 상에서 운영되며, 도커 및 OCI (Open Container Initiative) 호환 컨테이너 이미지와 관련 아티팩트를 안전하게 저장하고 관리하는 데 주로 사용된다.
애저 컨테이너 레지스트리는 개발자와 운영팀이 애플리케이션을 컨테이너화하고 배포하는 과정을 간소화한다. 사용자는 이 서비스를 통해 빌드된 컨테이너 이미지를 중앙 저장소에 푸시하고, 필요 시 풀하여 애저 쿠버네티스 서비스나 애저 앱 서비스와 같은 다양한 애저 컴퓨팅 서비스에 배포할 수 있다.
이 서비스는 전 세계의 여러 애저 지역에서 제공되며, 이미지 저장 및 배포 성능을 최적화하기 위해 지역 복제 기능을 지원한다. 또한 마이크로소프트 액티브 디렉터리 및 역할 기반 액세스 제어와의 통합을 통해 강력한 보안과 접근 제어를 제공한다.
2. 주요 기능
2. 주요 기능
2.1. 컨테이너 이미지 저장 및 관리
2.1. 컨테이너 이미지 저장 및 관리
애저 컨테이너 레지스트리의 핵심 기능은 도커 및 OCI (Open Container Initiative) 호환 컨테이너 이미지와 관련 아티팩트를 안전하게 저장하고 관리하는 것이다. 사용자는 익숙한 도커 CLI 명령어를 통해 이미지를 레지스트리에 푸시하거나 풀할 수 있으며, 이를 통해 애플리케이션의 배포와 관리를 단순화한다.
이 서비스는 이미지의 버전 관리를 위한 태그 지정 및 이미지 레이어 저장을 지원하여 효율적인 저장 공간 활용과 빠른 배포를 가능하게 한다. 또한 이미지의 수명 주기를 관리하기 위한 자동 정책을 설정할 수 있어, 사용하지 않는 오래된 이미지를 자동으로 삭제하여 레지스트리를 깔끔하게 유지하고 비용을 절감하는 데 도움이 된다.
애저 컨테이너 레지스트리는 도커 허브나 쿠버네티스와 같은 오픈 소스 도구 및 워크플로우와 완벽하게 호환된다. 이를 통해 개발자는 기존의 컨테이너 개발 및 배포 파이프라인을 크게 변경하지 않고도 애저의 관리형 서비스를 활용할 수 있다.
2.2. 지역 복제
2.2. 지역 복제
지역 복제 기능은 애저 컨테이너 레지스트리의 프리미엄 서비스 계층에서 제공하는 핵심 기능이다. 이 기능은 단일 레지스트리의 이미지와 아티팩트를 여러 애저 지역에 자동으로 복제하여 저장한다. 이를 통해 지리적으로 분산된 개발 팀이나 배포 환경이 특정 지역에 가까운 레지스트리에서 이미지를 빠르게 가져올 수 있어, 이미지 풀 대기 시간을 줄이고 가용성을 높인다.
복제는 마스터 레지스트리에서 설정한 복제본 지역으로 수행되며, 모든 복제본은 동일한 레지스트리 이름과 자격 증명으로 접근할 수 있다. 사용자는 이미지를 한 번만 푸시하면 되며, 서비스가 지정된 모든 지역에 이미지를 복제한다. 이는 글로벌 규모의 애플리케이션을 운영하거나 재해 복구 전략을 수립할 때 유용하다.
이 기능은 지리적 중복성을 제공하여 한 지역의 서비스 중단 시 다른 지역의 복제본을 통해 비즈니스 연속성을 유지할 수 있게 한다. 또한 컨테이너 오케스트레이션 플랫폼인 애저 쿠버네티스 서비스가 특정 지역의 클러스터를 배포할 때, 동일한 지역에 복제된 레지스트리에서 이미지를 가져오므로 네트워크 대기 시간과 비용을 최적화할 수 있다.
2.3. 통합 보안 및 액세스 제어
2.3. 통합 보안 및 액세스 제어
애저 컨테이너 레지스트리는 마이크로소프트 애저의 ID 관리 및 역할 기반 액세스 제어와 긴밀하게 통합되어 강력한 보안 및 액세스 제어 기능을 제공한다. 사용자는 애저 액티브 디렉터리를 활용하여 레지스트리와 그 내부의 리포지토리, 이미지, 태그에 대한 세분화된 권한을 관리할 수 있다. 이를 통해 조직은 최소 권한 원칙에 따라 개발자, DevOps 팀, CI/CD 파이프라인 또는 외부 시스템에 필요한 최소한의 액세스 권한만을 부여할 수 있다.
액세스 제어는 애저 포털, Azure CLI, 또는 Azure PowerShell을 통해 구성 가능하며, 사전 정의된 역할이나 사용자 정의 역할을 할당할 수 있다. 예를 들어, 특정 팀에는 특정 리포지토리로의 이미지 푸시 권한만 부여하고, 다른 팀에는 풀 권한만 부여하는 정책을 쉽게 구현할 수 있다. 또한 관리 ID를 사용하면 애플리케이션이나 서비스가 비밀번호나 접근 키 없이도 안전하게 레지스트리에 인증하여 이미지를 풀할 수 있다.
레지스트리의 모든 데이터 전송은 TLS를 통해 암호화되며, 저장된 컨테이너 이미지는 미사용 시에도 자동으로 암호화된다. 콘텐츠 신뢰 기능을 활성화하면 이미지에 디지털 서명을 적용하여 이미지의 무결성과 출처를 검증할 수 있어, 소프트웨어 공급망의 보안을 강화하는 데 도움이 된다. 이러한 통합된 보안 모델은 클라우드 네이티브 애플리케이션의 생명주기 전반에 걸쳐 보안과 규정 준수 요구사항을 충족시키는 데 기여한다.
2.4. Azure 서비스 통합
2.4. Azure 서비스 통합
애저 컨테이너 레지스트리는 마이크로소프트 애저 생태계 내 다른 서비스들과 원활하게 통합되어 컨테이너 기반 애플리케이션의 개발 및 운영 생명주기를 단순화한다. 가장 대표적인 통합은 애저 쿠버네티스 서비스와의 긴밀한 연동이다. 사용자는 애저 컨테이너 레지스트리에 저장된 도커 또는 OCI (Open Container Initiative) 호환 이미지를 애저 쿠버네티스 서비스 클러스터에 직접 배포할 수 있으며, 레지스트리 인증을 위해 관리 ID나 서비스 주체를 활용할 수 있어 보안 자격 증명을 안전하게 관리할 수 있다.
또한 애저 파이프라인 및 애저 데브옵스와 같은 CI/CD 도구와의 통합을 지원한다. 이를 통해 개발자는 코드 변경 사항이 발생하면 자동으로 이미지를 빌드하고 애저 컨테이너 레지스트리에 푸시한 후, 애저 앱 서비스나 애저 컨테이너 인스턴스와 같은 서비스로 자동 배포하는 워크플로를 구성할 수 있다. 이는 데브옵스 실천법을 구현하고 소프트웨어 제공 속도를 가속화하는 데 기여한다.
애저 컨테이너 레지스트리는 애저 프라이빗 링크를 통해 가상 네트워크 내부의 프라이빗 IP 주소로 안전하게 접근할 수 있으며, 애저 정책을 통해 리소스 사용을 제어할 수 있다. 이러한 광범위한 통합 기능은 애저 컨테이너 레지스트리를 단순한 이미지 저장소가 아닌, 애저 플랫폼에서 현대적 애플리케이션을 구축하고 운영하기 위한 핵심 구성 요소로 자리매김하게 한다.
3. 서비스 계층
3. 서비스 계층
3.1. Basic
3.1. Basic
Basic은 애저 컨테이너 레지스트리의 가장 기본적인 서비스 계층이다. 이 계층은 개발 및 학습 환경, 소규모 프로젝트와 같이 낮은 처리량과 기본적인 기능만 필요한 시나리오에 적합하도록 설계되었다. 도커 및 OCI (Open Container Initiative) 호환 이미지를 안전하게 저장하고 관리하는 핵심 기능을 제공하지만, 고급 기능은 포함하지 않는다.
Basic 계층의 주요 제한 사항은 저장 공간, 처리량 및 네트워크 성능에 있다. 이 계층은 다른 계층에 비해 제공되는 저장 용량이 제한적이며, 이미지 푸시 및 풀 작업에 대한 처리량과 대역폭도 낮다. 또한 지역 복제, 프라이빗 엔드포인트 연결, 자동화된 이미지 취약점 스캔과 같은 고급 기능은 포함되어 있지 않다.
이 계층은 비용 효율성을 중시하는 사용자에게 적합하다. 초기 개발 단계, 개념 증명(PoC), 개인 학습용으로 마이크로소프트 애저의 컨테이너 레지스트리 서비스를 경험해보고자 할 때 저렴한 진입점을 제공한다. 그러나 프로덕션 환경이나 대규모 팀에서 사용하기에는 기능과 성능 면에서 제약이 있을 수 있다.
Basic 계층에서 시작한 사용자는 애플리케이션 요구 사항이 증가하면 Standard 또는 Premium 계층으로 손쉽게 업그레이드할 수 있다. 이를 통해 더 큰 저장 용량, 향상된 성능, 그리고 지역 복제나 통합 보안 스캔과 같은 고급 기능을 활용할 수 있게 된다.
3.2. Standard
3.2. Standard
Standard 서비스 계층은 애저 컨테이너 레지스트리의 중간 단계 옵션으로, Basic 계층보다 향상된 저장 용량과 처리량을 제공한다. 이 계층은 소규모 프로덕션 워크로드에 적합하며, Basic 계층에는 없는 지역 복제 기능을 포함하고 있다. 이를 통해 단일 레지스트리를 여러 애저 지역에 복제하여 이미지 풀 성능과 가용성을 높일 수 있다.
표준 계층은 웹훅과 같은 고급 기능도 지원하여, 레지스트리에 특정 이벤트(예: 새 이미지가 푸시될 때)가 발생하면 외부 서비스에 알림을 보낼 수 있다. 또한 Basic 계층보다 더 높은 저장 용량과 이미지 전송 제한을 제공하여, 더 많은 컨테이너 이미지를 관리하고 더 많은 개발자 또는 빌드 에이전트가 동시에 작업할 수 있는 환경을 마련한다.
주요 특징 | 설명 |
|---|---|
저장 용량 | Basic 계층보다 많음 |
이미지 처리량(대역폭) | Basic 계층보다 높음 |
지역 복제 | 지원 (지역당 복제본 제공) |
웹훅 | 지원 |
가격 | Basic 계층보다 높고 Premium 계층보다 낮음 |
Standard 계층은 개발 및 테스트 환경을 넘어 초기 프로덕션 배포나 중간 규모의 팀에 적합한 기능 세트를 제공한다. 그러나 프리미엄 계층에서 제공되는 최고 수준의 처리량, 글로벌 복제, 프라이빗 엔드포인트를 통한 격리된 네트워크 액세스, 자동화된 이미지 취약점 스캔과 같은 고급 기능은 포함하지 않는다.
3.3. Premium
3.3. Premium
프리미엄 서비스 계층은 애저 컨테이너 레지스트리의 최상위 등급으로, 대규모 엔터프라이즈 환경과 높은 성능 요구 사항을 충족하도록 설계되었다. 이 계층은 스탠다드 계층의 모든 기능을 포함하며, 가장 높은 수준의 저장소 용량과 이미지 처리 처리량을 제공한다. 특히, 지리적으로 분산된 팀이 동일한 이미지를 빠르게 접근해야 하는 글로벌 배포 시나리오에서 필수적인 기능인 지역 복제를 지원한다.
프리미엄 계층의 핵심 가치는 고가용성과 성능에 있다. 지역 복제 기능을 통해 단일 레지스트리를 여러 애저 지역에 복제할 수 있어, 사용자는 네트워크상 가장 가까운 복제본에서 이미지를 풀할 수 있어 지연 시간을 크게 줄이고 가용성을 높일 수 있다. 또한, 처리량과 동시 작업 처리 능력이 기본 및 스탠다드 계층보다 월등히 높아, 수천 개의 노드를 보유한 대규모 쿠버네티스 클러스터나 지속적 통합/지속적 배포 파이프라인에서 발생하는 집중적인 이미지 푸시 및 풀 작업을 원활하게 처리한다.
이 계층은 또한 향상된 보안 기능을 포함한다. 프리미베이트 엔드포인트를 통한 프라이빗 링크 연결은 기본적으로 지원되어, 레지스트리 트래픽이 공용 인터넷을 완전히 우회하도록 구성할 수 있다. 애저 컨테이너 레지스트리 태스크와의 통합을 통해 이미지 빌드, 패치 적용, 보안 스캔을 자동화하는 고급 워크플로우를 구축하는 데 적합한 환경을 제공한다.
프리미엄 계층은 높은 확장성과 글로벌 접근성이 요구되는 프로덕션 환경에 적합하다. 대규모 마이크로서비스 아키텍처를 운영하거나, 전 세계에 걸쳐 개발 및 운영 팀을 보유한 조직, 또는 엄격한 서비스 수준 계약이 필요한 애플리케이션을 배포하는 경우 이 계층을 선택하는 것이 일반적이다.
4. 사용 방법
4. 사용 방법
4.1. 레지스트리 생성
4.1. 레지스트리 생성
애저 컨테이너 레지스트리 생성은 마이크로소프트 애저 포털, Azure CLI, Azure PowerShell, Azure Resource Manager 템플릿 또는 Terraform과 같은 인프라 코드 도구를 통해 수행할 수 있다. 생성 과정에서는 레지스트리의 고유한 이름, 구독, 리소스 그룹, 위치(지역), 그리고 서비스 계층(Basic, Standard, Premium)을 선택해야 한다. 레지스트리 이름은 전역적으로 고유해야 하며, 일반적으로 DNS 호스트 이름의 일부로 사용된다.
생성 시 구성할 수 있는 주요 옵션으로는 관리형 가상 네트워크 내에서의 프라이빗 액세스를 위한 프라이빗 엔드포인트 설정, 공용 네트워크 액세스를 제한하는 방화벽 규칙, 그리고 저장 데이터를 암호화하는 데 사용되는 고객 관리형 키가 있다. 또한, 생성 직후 또는 이후에 관리 ID를 할당하여 다른 애저 서비스가 레지스트리에 안전하게 접근할 수 있도록 구성할 수 있다.
레지스트리가 성공적으로 생성되면, 사용자는 도커 CLI나 다른 OCI (Open Container Initiative) 호환 클라이언트 도구를 사용하여 docker login 명령어로 레지스트리에 인증한 후, 컨테이너 이미지를 푸시하거나 풀할 수 있는 엔드포인트를 얻게 된다. 생성된 레지스트리는 Azure Kubernetes Service, 애저 앱 서비스, 애저 컨테이너 인스턴스 등 다양한 애저 서비스와 즉시 연동되어 사용될 수 있다.
4.2. 이미지 푸시 및 풀
4.2. 이미지 푸시 및 풀
애저 컨테이너 레지스트리의 핵심 작업은 도커 CLI나 다른 컨테이너 도구를 사용하여 컨테이너 이미지를 레지스트리에 업로드(푸시)하고 다운로드(풀)하는 것이다. 사용자는 표준 docker push 및 docker pull 명령어를 사용하며, 명령어의 대상 레지스트리 주소로 자신의 애저 레지스트리 로그인 서버 주소(예: myregistry.azurecr.io)를 지정한다. 작업을 수행하기 전에는 docker login 명령어를 통해 레지스트리에 인증을 완료해야 하며, 이때 애저 CLI나 관리형 서비스 주체를 활용한 자동화된 인증이 일반적으로 사용된다.
이미지를 푸시할 때는 태그를 지정하여 버전 관리를 할 수 있으며, 레지스트리는 동일한 이미지의 여러 태그와 레이어를 효율적으로 저장한다. 풀 작업은 애저 쿠버네티스 서비스나 애저 컨테이너 인스턴스와 같은 다른 애저 서비스에서 애플리케이션을 배포하거나, 개발 환경에서 이미지를 가져올 때 수행된다. 이 모든 과정은 OCI (Open Container Initiative) 표준을 준수하는 이미지 형식에서 완벽하게 작동하도록 설계되어 있다.
4.3. Azure Kubernetes Service와 연동
4.3. Azure Kubernetes Service와 연동
애저 컨테이너 레지스트리는 애저 쿠버네티스 서비스와의 긴밀한 통합을 통해 컨테이너 기반 애플리케이션의 배포 파이프라인을 간소화한다. 사용자는 애저 쿠버네티스 서비스 클러스터를 생성하거나 구성할 때, 애저 컨테이너 레지스트리를 이미지 소스로 직접 지정할 수 있다. 이를 통해 클러스터는 프라이빗 레지스트리에 저장된 컨테이너 이미지에 안전하게 접근하여 파드를 생성하고 애플리케이션을 배포할 수 있다.
연동의 핵심은 인증 메커니즘에 있다. 애저 쿠버네티스 서비스 클러스터는 관리 ID나 서비스 주체를 사용하여 애저 컨테이너 레지스트리에 자동으로 인증한다. 이 방식은 도커 구성 파일에 비밀번호를 저장할 필요 없이 안전한 이미지 풀을 가능하게 한다. 특히 쿠버네티스의 imagePullSecrets를 수동으로 구성하지 않고도 통합 인증이 이루어져 운영 효율성을 높인다.
이러한 통합은 CI/CD 파이프라인을 구축할 때 큰 이점을 제공한다. 개발자는 깃허브 액션이나 애저 파이프라인과 같은 도구를 사용하여 애저 컨테이너 레지스트리에 새로운 이미지를 푸시하고, 애저 쿠버네티스 서비스는 업데이트된 이미지를 기반으로 애플리케이션을 자동으로 재배포할 수 있다. 또한 지역 복제 기능이 활성화된 프리미엄 계층 레지스트리를 사용하면, 전 세계에 분산된 애저 쿠버네티스 서비스 클러스터가 동일한 이미지 레지스트리 엔드포인트를 통해 가장 가까운 복제본에서 빠르게 이미지를 가져올 수 있어 배포 속도와 안정성을 개선한다.
5. 보안
5. 보안
5.1. 관리 ID 및 서비스 주체
5.1. 관리 ID 및 서비스 주체
애저 컨테이너 레지스트리는 애플리케이션 코드나 비밀번호를 하드코딩하지 않고도 안전하게 인증하고 액세스할 수 있도록 관리 ID와 서비스 주체를 지원한다. 관리 ID는 애저 내에서 자동으로 관리되는 ID로, 애저 리소스가 다른 애저 서비스에 인증하는 데 사용된다. 특히 시스템 할당 관리 ID 또는 사용자 할당 관리 ID를 레지스트리에 할당하면, 해당 ID를 통해 레지스트리에 대한 푸시, 풀 또는 기타 관리 작업을 수행할 수 있어 보안 자격 증명을 직접 관리할 필요가 없어진다.
서비스 주체는 애저 Active Directory에 등록된 애플리케이션 또는 서비스를 나타내는 보안 주체이다. 애저 컨테이너 레지스트리와 같은 특정 리소스에 대한 접근 권한을 부여받아 사용된다. 예를 들어, CI/CD 파이프라인이나 레지스트리 외부의 애플리케이션이 서비스 주체를 사용하여 레지스트리에 인증할 수 있다. 서비스 주체는 역할 기반 접근 제어를 통해 세분화된 권한(예: 읽기 전용, 기여자, 소유자)을 부여받으며, 필요에 따라 비밀번호나 인증서를 통해 인증한다.
이러한 메커니즘은 보안 강화에 기여한다. 관리 ID를 사용하면 자격 증명이 애저 플랫폼에 의해 완전히 관리되고 순환되므로 유출 위험이 줄어든다. 서비스 주체는 최소 권한 원칙에 따라 애플리케이션에 꼭 필요한 권한만 부여할 수 있어 접근 제어를 효과적으로 할 수 있다. 결과적으로, 도커 CLI나 쿠버네티스 클러스터와 같은 클라이언트가 안전하게 레지스트리와 상호작용할 수 있는 기반을 제공한다.
5.2. 프라이빗 엔드포인트
5.2. 프라이빗 엔드포인트
프라이빗 엔드포인트는 애저 컨테이너 레지스트리에 대한 네트워크 액세스를 가상 네트워크 내의 프라이빗 IP 주소를 통해 안전하게 제공하는 기능이다. 이를 통해 레지스트리와 클라이언트 간의 모든 트래픽이 마이크로소프트의 백본 네트워크를 경유하게 되어, 공용 인터넷을 통한 데이터 전송이 완전히 배제된다. 이는 네트워크 보안을 강화하고 데이터 반출 위험을 줄이는 데 핵심적인 역할을 한다.
이 기능은 프리미엄 서비스 계층의 컨테이너 레지스트리에서 사용할 수 있다. 구성 시 사용자는 자신의 가상 네트워크 내에 프라이빗 엔드포인트를 생성하고, 이를 특정 애저 컨테이너 레지스트리 인스턴스에 연결한다. 그 결과, 가상 머신이나 애저 쿠버네티스 서비스 클러스터와 같은 가상 네트워크 내의 리소스는 공용 인터넷 엔드포인트 없이도 안전하게 레지스트리에 접근하여 컨테이너 이미지를 푸시하거나 풀할 수 있다.
5.3. 이미지 취약점 스캔
5.3. 이미지 취약점 스캔
애저 컨테이너 레지스트리는 통합된 이미지 취약점 스캔 기능을 제공한다. 이 기능은 레지스트리에 푸시되는 모든 컨테이너 이미지를 자동으로 스캔하여 알려진 취약점을 식별한다. 스캔은 Qualys의 데이터베이스를 기반으로 하며, CVE (Common Vulnerabilities and Exposures) 식별자와 심각도 수준을 포함한 상세한 보고서를 생성한다. 이를 통해 개발자와 보안 팀은 배포 전에 이미지의 보안 상태를 사전에 평가하고 위험을 완화할 수 있다.
취약점 스캔 결과는 애저 포털 내에서 직접 확인할 수 있으며, 각 이미지 레이어별로 발견된 취약점을 시각적으로 보여준다. 발견된 문제는 심각도(위험, 높음, 중간, 낮음)에 따라 분류되어 우선순위에 따른 조치를 취할 수 있도록 돕는다. 또한, Azure Security Center와 통합되어 중앙 집중식 보안 관리 및 규정 준수 모니터링을 가능하게 한다.
이 기능은 특히 DevSecOps 문화를 구현하는 데 유용하며, 소프트웨어 개발 수명 주기(SDLC) 초기 단계부터 보안을 강화하는 데 기여한다. 애저 컨테이너 레지스트리의 취약점 스캔은 기본적으로 프리미엄 서비스 계층에 포함되어 있으며, 지속적인 보안 위협에 대응하는 데 필수적인 도구로 평가받고 있다.
6. 가격 모델
6. 가격 모델
애저 컨테이너 레지스트리의 가격 모델은 사용량에 기반한 종량제 방식으로 운영된다. 요금은 선택한 서비스 계층, 데이터 스토리지 용량, 네트워크 데이터 송신량, 그리고 프리미엄 계층에서 제공되는 추가 기능의 사용 여부에 따라 결정된다. 기본적인 이미지 저장 및 풀 작업에는 추가 비용이 발생하지 않는다.
가격 책정의 주요 구성 요소는 스토리지, 네트워크 송신, 그리고 작업 수행 횟수이다. 스토리지 요금은 매일 사용한 기가바이트 단위의 저장 공간에 대해 부과된다. 네트워크 송신 요금은 레지스트리에서 외부로 전송된 데이터 양에 따라 청구되며, 애저 데이터 센터 내부 또는 가용성 영역 간 트래픽은 일반적으로 무료다. 작업 수행 횟수는 이미지를 푸시하거나 풀할 때 발생하는 읽기/쓰기 작업 건수를 의미한다.
서비스 계층별로 일일 포함량과 단가가 상이하다. Basic 계층은 소규모 테스트 환경에 적합한 저비용 옵션을 제공한다. Standard 계층은 대부분의 프로덕션 워크로드에 필요한 성능과 포함량을 갖추고 있다. Premium 계층은 가장 높은 처리량, 지역 복제 기능, 프라이빗 엔드포인트 연결, 그리고 자동화된 이미지 취약점 스캔과 같은 고급 보안 및 지리적 복제 기능을 포함한다.
사용자는 애저 포털 내의 가격 계산기를 활용하거나, 애저 코스트 매니지먼트를 통해 리소스 사용량을 모니터링하고 예산을 설정할 수 있다. 이를 통해 예상 비용을 산출하고 비용 최적화를 진행할 수 있다.
